package com.woniu.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

/**
 * 表名：account
 * 表注释：用户信息表
*/

@Table(name = "account")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Account implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 用户ID
     */
    @Id
    @Column(name = "account_id")
    private Integer accountId;

    /**
     * 用户账号
     */
    @Column(name = "account_name")
    private String accountName;

    /**
     * 密码
     */
    @Column(name = "password")
    private String password;

    /**
     * 用户昵称
     */
    @Column(name = "nick_name")
    private String nickName;

    /**
     * 用户类型（00系统用户,01创建用户）
     */
    @Column(name = "account_type")
    private String accountType;

    /**
     * 用户邮箱
     */
    @Column(name = "email")
    private String email;

    /**
     * 手机号码
     */
    @Column(name = "phone_number")
    private String phoneNumber;

    /**
     * 用户性别（0男 1女 2未知）
     */
    @Column(name = "gender")
    private Byte gender;

    /**
     * 头像地址
     */
    @Column(name = "avatar")
    private String avatar;

    /**
     * 最后登录时间
     */
    @Column(name = "login_date")
    private Date loginDate;

    /**
     * 帐号状态(0正常 1逻辑删除)
     */
    @Column(name = "is_delete")
    private Byte isDelete;

    /**
     * 创建时间
     */
    @Column(name = "create_time")
    private Date createTime;

    /**
     * 更新时间
     */
    @Column(name = "update_time")
    private Date updateTime;

    /**
     * 备注
     */
    @Column(name = "remark")
    private String remark;

    public Account(Integer accountId, Byte isDelete, String remark) {
        this.accountId = accountId;
        this.isDelete = isDelete;
        this.remark = remark;
    }

    public Account(String accountName) {
        this.accountName = accountName;
    }

    public Account(String accountName, String password) {
        this.accountName = accountName;
        this.password = password;
    }
    
    public Account(Integer accountId){
        this.accountId = accountId;
    }

    /**
     * 获取用户ID
     *
     * @return accountId - 用户ID
     */
    public Integer getAccountId() {
        return accountId;
    }

    /**
     * 设置用户ID
     *
     * @param accountId 用户ID
     */
    public void setAccountId(Integer accountId) {
        this.accountId = accountId;
    }

    /**
     * 获取用户账号
     *
     * @return accountName - 用户账号
     */
    public String getAccountName() {
        return accountName;
    }

    /**
     * 设置用户账号
     *
     * @param accountName 用户账号
     */
    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }

    /**
     * 获取密码
     *
     * @return password - 密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置密码
     *
     * @param password 密码
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * 获取用户昵称
     *
     * @return nickName - 用户昵称
     */
    public String getNickName() {
        return nickName;
    }

    /**
     * 设置用户昵称
     *
     * @param nickName 用户昵称
     */
    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    /**
     * 获取用户类型（00系统用户,01创建用户）
     *
     * @return accountType - 用户类型（00系统用户,01创建用户）
     */
    public String getAccountType() {
        return accountType;
    }

    /**
     * 设置用户类型（00系统用户,01创建用户）
     *
     * @param accountType 用户类型（00系统用户,01创建用户）
     */
    public void setAccountType(String accountType) {
        this.accountType = accountType;
    }

    /**
     * 获取用户邮箱
     *
     * @return email - 用户邮箱
     */
    public String getEmail() {
        return email;
    }

    /**
     * 设置用户邮箱
     *
     * @param email 用户邮箱
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * 获取手机号码
     *
     * @return phoneNumber - 手机号码
     */
    public String getPhoneNumber() {
        return phoneNumber;
    }

    /**
     * 设置手机号码
     *
     * @param phoneNumber 手机号码
     */
    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    /**
     * 获取用户性别（0男 1女 2未知）
     *
     * @return gender - 用户性别（0男 1女 2未知）
     */
    public Byte getGender() {
        return gender;
    }

    /**
     * 设置用户性别（0男 1女 2未知）
     *
     * @param gender 用户性别（0男 1女 2未知）
     */
    public void setGender(Byte gender) {
        this.gender = gender;
    }

    /**
     * 获取头像地址
     *
     * @return avatar - 头像地址
     */
    public String getAvatar() {
        return avatar;
    }

    /**
     * 设置头像地址
     *
     * @param avatar 头像地址
     */
    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    /**
     * 获取最后登录时间
     *
     * @return loginDate - 最后登录时间
     */
    public Date getLoginDate() {
        return loginDate;
    }

    /**
     * 设置最后登录时间
     *
     * @param loginDate 最后登录时间
     */
    public void setLoginDate(Date loginDate) {
        this.loginDate = loginDate;
    }

    /**
     * 获取帐号状态(0正常 1逻辑删除)
     *
     * @return isDelete - 帐号状态(0正常 1逻辑删除)
     */
    public Byte getIsDelete() {
        return isDelete;
    }

    /**
     * 设置帐号状态(0正常 1逻辑删除)
     *
     * @param isDelete 帐号状态(0正常 1逻辑删除)
     */
    public void setIsDelete(Byte isDelete) {
        this.isDelete = isDelete;
    }

    /**
     * 获取创建时间
     *
     * @return createTime - 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取更新时间
     *
     * @return updateTime - 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取备注
     *
     * @return remark - 备注
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 设置备注
     *
     * @param remark 备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }
}